package View;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.Enumeration;

import Controller.*;

/** La classe BoutonAMenu est un JButton auquel on a ajouter un menu contextuel
 * pour permettre de modifier l'action du boutton
 */

public class BoutonAMenu extends JButton {

	private JPopupMenu menu;
	private JRadioButtonMenuItem[] items; //la string correspondante se trouve à i+1
	private ButtonGroup group;


	BoutonAMenu(String[] s) {
		super(s[0]);

		FlowLayout layout = new FlowLayout();
		setLayout(layout);
		layout.setVgap(30);

		setActionCommand(s[1]+"."+s[2]); //Par defaut 1er elm de la liste est selectionné
		menu = new JPopupMenu();

		items = new JRadioButtonMenuItem[s.length-2];
		//les deux premiers elm ne sont à ajouter dans le menu

		group = new ButtonGroup();

		//initialisation du menu
		for(int i=2; i<s.length;i++) {
			JRadioButtonMenuItem tmp = new JRadioButtonMenuItem(s[i]);
			tmp.setActionCommand(s[1]+"."+s[i]);
			group.add(tmp);
			items[i-2] = tmp;
			menu.add(tmp);
		}
		//Liaison avec l'ecouteur fait par l'ecouteur lui même
	}

	public void addMenuListener(EcouteurDeBoutonAMenu ebam) {
		for(int i=0; i< items.length; i++) {
			items[i].addActionListener(ebam);
		}
	}

	public JPopupMenu getMenu() {
		return menu;
	}


	public void setSelection() {
		//methode pour afficher graphiquement la selection
		AbstractButton ab;

		Enumeration<AbstractButton> enu = group.getElements();
		while(enu.hasMoreElements())
		{
			ab = enu.nextElement();
			if(ab.isSelected() ) {
				ab.setBackground(UIManager.getColor("MenuItem.selectionBackground"));
				ab.setForeground(UIManager.getColor("MenuItem.selectionForeground"));
			} else {
				ab.setBackground(null);
				ab.setForeground(null);
			}
		}
	}
}
